package com.lzh.mybatisdemo.utils;

import java.math.BigDecimal;

/**
 * @Description:
 * @Author: LiuZiHao
 * @Date: 2022/6/29 16:25
 */
public class WorkPlaceMain {
    public static void main(String[] args) {
        //问题1：double 类型 转 bigDecimal 丢失精度
        //11.1335
        //11.1334999999999997299937604111619293689727783203125
        //所以强烈建议不要使用参数为float或double的BigDecimal创建对象。
        double value = 11.1335;
        BigDecimal b = new BigDecimal(value);
        double ff = b.setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
        System.out.println("ff = " + ff);
        //解决方法:
        //1.使用String
        double valueStr = 11.1335;
        BigDecimal c = new BigDecimal(valueStr + "");
        double q1 = c.setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
        System.out.println("q1 = " + q1);
        //2.使用valueOf
        double valued = 11.1335;
        BigDecimal d = BigDecimal.valueOf(valued);
        double q2 = d.setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
        System.out.println("q2 = " + q2);

        //问题2:
    }
}
